import pandas as pd
import matplotlib.pyplot as plt
import os

# 为了便于快速看到结果，除了Folium，也设置了PNG的可视化形式
def plot_group_trajectories(grouped_dir, detailed_dir, output_dir):
    """
    为每个MMSI模式组绘制轨迹图并保存为图片。

    Parameters:
    - grouped_dir: 存储MMSI模式组文件的目录。
    - detailed_dir: 存储详细轨迹CSV文件的目录。
    - output_dir: 保存轨迹图像的目录。
    """
    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)

    # 遍历所有MMSI模式组文件
    for group_file in os.listdir(grouped_dir):
        group_df = pd.read_csv(os.path.join(grouped_dir, group_file))
        plt.figure()

        # 遍历模式组中的每个MMSI
        for mmsi in group_df['MMSI']:
            detailed_file_path = os.path.join(detailed_dir, f"{mmsi}_detailed.csv")
            if os.path.exists(detailed_file_path):
                # 读取并绘制轨迹
                trajectory_data = pd.read_csv(detailed_file_path)
                plt.plot(trajectory_data['LONGITUDE'], trajectory_data['LATITUDE'], '-', linewidth=1)

        # 设置图像属性
        plt.title(f'Trajectories for {group_file[:-4]}')
        plt.xlabel('Latitude')
        plt.ylabel('Longitude')
        plt.axis('equal')

        # 保存图像
        save_path = os.path.join(output_dir, f"{group_file[:-4]}_Trajectories.png")
        plt.savefig(save_path)
        plt.close()
        print(f"Saved trajectory image for {group_file[:-4]} to {save_path}")

if __name__ == "__main__":
    # 指定存储MMSI模式组、详细轨迹数据和轨迹图像的目录路径
    grouped_dir = "./Data/Groups/CSJ/LaplacianEigenmaps_Optics/MMSI_Cluster_Groups2/MMSI_Patterns"
    detailed_dir = "./Data/Groups/CSJ/LaplacianEigenmaps_Optics/MMSI_Cluster_Groups2/Detailed_Trajectories"
    output_dir = "./Data/Groups/CSJ/LaplacianEigenmaps_Optics/MMSI_Cluster_Groups2/Trajectory_Images"

    plot_group_trajectories(grouped_dir, detailed_dir, output_dir)
